package com.exam.service;

import java.util.List;

import com.exam.exception.AdminIsStopException;
import com.exam.exception.AdminNameIsExistException;
import com.exam.exception.AdminNoExistException;
import com.exam.exception.PasswordErrorException;
import com.exam.pojo.Admin;
import com.exam.pojo.Paging;

/**
 * @author 郭荣锋
  *  管理员服务层接口
 */
public interface AdminService {
	//以下方法未完成 
	/**
	  * 停用管理员 （废弃）
	 * @param 管理员名称
	 * @return
	 */
	public void stopAdmin(String adminName);
	
	/**
	  * 启用管理员 (废弃)
	 * @param 管理员名称
	 * @return
	 */
	public void startAdmin(String adminName);
	
	/**
	  * 获取所有管理员(包括被删除的管理员)
	 * @param
	 * @return 管理员列表
	 */
	public List<Admin> getAllAdmin();
	
	/**
	  *  更新管理员信息
	 * @param 更新完的管理员信息
	 * @return 
	 * @throws 管理员名称已存在异常
	 */
	public void updateAdmin(Admin admin) throws AdminNameIsExistException;
	
	/**
	  * 添加管理员
	 * @param 管理员对象
	 * @return
	 */
	public void addAdmin(Admin admin) throws AdminNameIsExistException;
	
	/**
	  *  验证管理员身份
	 * @param adminName 管理员名
	 * @param password 密码
	 * @return
	 * @throws AdminNoExistException 管理员不存在异常
	 * @throws PasswordErrorException 密码错误异常
	 * @throws AdminIsStopException 管理员被停用异常 
	 */
	public void validate(String adminName,String password) throws AdminNoExistException,
		AdminIsStopException,PasswordErrorException;
	
	/**
	  *  通过管理员名字获取管理员对象
	 * @param adminName 管理员名字
	 * @return 管理员对象
	 */
	public Admin getAdminByName(String adminName);
	
	/**
	 * 通过管理员编号获取管理员对象
	 * @param adminId 管理员编号
	 * @return 管理员对象
	 */
	public Admin getAdminById(Integer adminId);

	/**
	 * 以分页的形式获取管理员列表
	 * @param page 当前页面
	 * @param sizePage 页面大小
	 * @return 管理员列表
	 */
	public Paging<Admin> getAdminByPaging(Integer page,Integer sizePage);

}
